package com.threatconnect.sdk.util; import java.io.IOException; import java.util.Iterator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.ObjectCodec; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.threatconnect.sdk.server.entity.CustomIndicator; import com.threatconnect.sdk.server.response.entity.data.GenericIndicatorResponseData; public class GenericIndicatorResponseDataDeserializer extends JsonDeserializer<GenericIndicatorResponseData> { //THIS IS NOT NEEDED for now, will refactor to make it to work later if we have the case @Override public GenericIndicatorResponseData deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException { GenericIndicatorResponseData result = new GenericIndicatorResponseData(); ObjectCodec oc = p.getCodec(); ObjectNode rootNode = oc.readTree(p); Iterator<String> keys = rootNode.fieldNames(); if (keys.hasNext()) { String key = (String) keys.next(); //result.setType(key); JsonNode value = rootNode.get(key); CustomIndicator obj = oc.treeToValue(value, CustomIndicator.class); //obj.setType(key); obj.setIndicatorType(key); //result.setCustomIndicator(obj); } return result; } }